home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 006 / minicalc.arc / MINICALC.BAS next >
BASIC Source File  |  1986-04-26  |  16KB  |  233 lines

  1. 5 '&H2E2E..IBM MiniCalc Program....
  2. 10 CLEAR 1500:DIM M(11,23),E$(11,23),M$(11,23),Z(22),P(22):S$=STRING$(2,219):C=1:R=1:BL$=STRING$(78,32)
  3. 14 FOR I=1 TO 11:FOR J=1 TO 22:E$(I,J)="^":M$(I,J)=" ":NEXT J:NEXT I
  4. 15 CLS:KEY OFF:DEF SEG=0:Z=(PEEK(1047) OR 64) AND 223:POKE 1047,Z
  5. 20 FOR T=3 TO 24:LOCATE T,1:PRINT USING "##";T-2;:PRINT CHR$(221);:NEXT
  6. 25 LOCATE 2,3:PRINT CHR$(219);:FOR I=65 TO 75:PRINT S$;" ";CHR$(I);" ";S$;:NEXT I:FOR T=1 TO 1000:NEXT T
  7. 28 '&H2E2E..Main Progam Loop....
  8. 30 COLOR 7,0:LOCATE 1,1:PRINT BL$;:R$=STR$(R):R$=RIGHT$(R$,LEN(R$)-1):IF B$<>"" THEN M(C,R)=VAL(B$)
  9. 31 LOCATE 1,1:PRINT CHR$(C+64);R$;" =";M(C,R);RIGHT$(E$(C,R),LEN(E$(C,R))-1);
  10. 32 IF LEFT$(E$(C,R),1)="^" AND M(C,R)=0 AND M$(C,R)<>" " THEN LOCATE 1,6:PRINT M$(C,R);" ... Label";
  11. 33 DEF SEG=&HB800:A=((R+1)*160-1)+((C*7-3)*2-1):COLOR 0,7:FOR I=A+1 TO A+12 STEP 2:POKE I,112:NEXT I
  12. 34 A$=INKEY$:GOSUB 2800:IF A$="" THEN 34
  13. 35 IF LEN(A$)=1 THEN 47 ELSE A$=MID$(A$,2,1):COLOR 7,0
  14. 36 IF A$=CHR$(72) THEN 40 ELSE IF A$=CHR$(80) THEN 42 ELSE IF A$=CHR$(75) THEN 44 ELSE IF A$=CHR$(77) THEN 46 ELSE 30
  15. 40 IF R=1 THEN 30 ELSE GOSUB 9200:IF B$<>"" THEN M(C,R)=VAL(B$):B$="":R=R-1:GOTO 30 ELSE B$="":R=R-1:GOTO 30
  16. 42 IF R=22 THEN 30 ELSE GOSUB 9200:IF B$<>"" THEN M(C,R)=VAL(B$):B$="":R=R+1:GOTO 30 ELSE B$="":R=R+1:GOTO 30
  17. 44 IF C=1 THEN 30 ELSE GOSUB 9200:IF B$<>"" THEN M(C,R)=VAL(B$):B$="":C=C-1:GOTO 30 ELSE B$="":C=C-1:GOTO 30
  18. 46 IF C=11 THEN 30 ELSE GOSUB 9200:IF B$<>"" THEN M(C,R)=VAL(B$):B$="":C=C+1:GOTO 30 ELSE B$="":C=C+1:GOTO 30
  19. 47 IF A$=">" THEN COLOR 7,0:GOTO 2500
  20. 48 IF ASC(A$)=13 THEN M$(C,R)=B$:GOTO 30
  21. 49 IF A$="/" THEN COLOR 7,0:GOTO 2000
  22. 50 IF LEN(B$)=6 THEN LOCATE R+2,(C*7)-3:PRINT LEFT$(B$,6);:GOTO 30 ELSE B$=B$+A$:LOCATE R+2,(C*7)-3+(6-LEN(B$)):PRINT B$;:GOTO 30
  23. 60 '&H2E2E..Compute Routine....
  24. 500 GOSUB 9200:LOCATE 1,1:PRINT "COMPUTE. Function (+,-,*,/) ? ";
  25. 510 A$=INKEY$:IF A$="" THEN 510 ELSE IF A$="+" OR A$="-" OR A$="*" OR A$="/" THEN 515 ELSE 510
  26. 515 C$=A$
  27. 520 GOSUB 1000:GOSUB 600:Z8=D1:Z9=D2:GOSUB 9100:D2=D2+1:LOCATE 1,1:PRINT STRING$(64,32);:GOTO 30
  28. 600 IF C$="+" THEN M(D1,D2)=M(A1,A2)+M(B1,B2):GOTO 640
  29. 610 IF C$="-" THEN M(D1,D2)=M(A1,A2)-M(B1,B2):GOTO 640
  30. 620 IF C$="*" THEN M(D1,D2)=M(A1,A2)*M(B1,B2):GOTO 640
  31. 630 IF C$="/" THEN M(D1,D2)=M(A1,A2)/M(B1,B2)
  32. 640 A0=A2:GOSUB 700:E$(D1,D2)="E"+CHR$(A1+64)+B$+C$
  33. 650 A0=B2:GOSUB 700:E$(D1,D2)=E$(D1,D2)+CHR$(B1+64)+B$
  34. 660 RETURN
  35. 700 B$=RIGHT$(STR$(A0),LEN(STR$(A0))-1)
  36. 710 IF LEN(B$)=1 THEN B$="0"+B$
  37. 720 RETURN
  38. 990 '&H2E2E..Coordinate Input Routine....
  39. 1000 LOCATE 1,1:PRINT BL$;:IF T=1 THEN LOCATE 1,1:PRINT "TOTAL. Enter co-ordinates: "; ELSE IF A=1 THEN LOCATE 1,1:PRINT "AVERAGE. Enter co-ordinates: "; ELSE LOCATE 1,1:PRINT "Enter co-ordinates: ";
  40. 1010 GOSUB 1100:A1=C:A2=R:PRINT "..";:GOSUB 1100:B1=C:B2=R:PRINT "..";:GOSUB 1100:D1=C:D2=R:M$(D1,D2)=" ":RETURN
  41. 1100 A$=INKEY$:IF A$="" THEN 1100 ELSE IF A$<"A" OR A$>"K" THEN 1100 ELSE PRINT  A$;:C=ASC(A$)-64
  42. 1120 Z$="":A$=INKEY$:IF A$="" THEN 1120 ELSE IF A$=CHR$(8) THEN LOCATE ,POS(0)-1:GOTO 1100 ELSE IF A$<"0" OR A$>"9" THEN 1120 ELSE PRINT A$;:Z$=Z$+A$
  43. 1130 A$=INKEY$:IF A$="" THEN 1130 ELSE IF A$=CHR$(8) THEN LOCATE ,POS(0)-1:GOTO  1120 ELSE IF A$<"0" OR A$>"9" THEN 1130 ELSE PRINT A$;:Z$=Z$+A$:R=VAL(Z$):RETURN
  44. 1990 '&H2E2E..Special Command Routine....
  45. 2000 T=0:GOSUB 9200
  46. 2005 LOCATE 1,1:PRINT "Special Command (A,B,C,D,E,G,H,L,N,P,Q,R,S,T,>) ? ";
  47. 2010 A$=INKEY$:IF A$="" THEN 2010
  48. 2012 IF A$>"`" AND A$<"{" THEN A$=CHR$(ASC(A$)-32)
  49. 2015 LOCATE 1,1:PRINT BL$;
  50. 2020 IF A$="B" THEN 2100 ELSE IF A$="C" THEN 500 ELSE IF A$="Q" THEN 2600 ELSE IF A$="N" THEN RUN ELSE IF A$="P" THEN 3000 ELSE IF A$="R" THEN 4000 ELSE IF A$="S" THEN 5000
  51. 2021 IF A$="L" THEN 5500 ELSE IF A$="G" THEN 10000 ELSE IF A$="H" THEN 8000 ELSE IF A$="T" THEN 6000 ELSE IF A$="D" THEN 6100 ELSE IF A$="A" THEN 6200 ELSE IF A$="E" THEN 7000 ELSE IF A$=">" THEN 2500 ELSE 30
  52. 2100 M(C,R)=0:B$="":E$(C,R)="^":M$(C,R)=" ":LOCATE R+2,(C*7)-3:PRINT "      ";
  53. 2110 GOTO 30
  54. 2490 '&H2E2E..Goto Routine....
  55. 2500 LOCATE 1,1:PRINT BL$:LOCATE 1,1:PRINT "Go to ... ";
  56. 2510 GOSUB 9200:GOSUB 1100
  57. 2520 B$="":GOTO 30
  58. 2590 '&H2E2E..Quit Routine....
  59. 2600 CLS
  60. 2610 A$="MiniCalc":B$="b":C$="y":D$="John Vandegrift":COUNT=10
  61. 2620 GOSUB 2730
  62. 2630 A$="        ":B$=" ":C$=" ":D$="               ":COUNT=9
  63. 2635 GOSUB 2730
  64. 2640 KEY ON:LOCATE 23,1:END
  65. 2730 FOR I=1 TO COUNT
  66. 2740 LOCATE I,37:PRINT A$;
  67. 2750 LOCATE 12,4*I:PRINT B$;
  68. 2760 LOCATE 12,81-(4*I):PRINT C$;
  69. 2770 LOCATE 24-I,33:PRINT D$;
  70. 2780 NEXT I
  71. 2790 RETURN
  72. 2799 '&H2E2E..25th Line....
  73. 2800 DEF SEG=0
  74. 2810 LOCATE 25,1:IF PEEK(1047) AND 64 THEN PRINT "Caps On "; ELSE PRINT "Caps Off";
  75. 2820 LOCATE 25,73:IF PEEK(1047) AND 32 THEN PRINT "Numbers"; ELSE PRINT "Cursor ";
  76. 2830 LOCATE 25,36:PRINT " MiniCalc ";
  77. 2840 RETURN
  78. 2990 '&H2E2E..Print Routine....
  79. 3000 I$=STRING$(2,"-"):LPRINT
  80. 3005 LPRINT:LPRINT TAB(37);"MiniCalc":LPRINT
  81. 3010 LPRINT "  *";I$;" A ";I$;I$;" B ";I$;I$;" C ";I$;I$;" D ";I$;I$;" E ";I$;I$;" F ";I$;I$;" G ";I$;I$;" H ";I$;I$;" I ";I$;I$;" J ";I$;I$;" K ";I$
  82. 3020 DEF SEG = &HB800:WIDTH "LPT1:",81
  83. 3030 FOR I=2 TO 23:FOR J=0 TO 79:INMEM=PEEK((J*2)+(I*160))
  84. 3035 IF INMEM>128 THEN INMEM=42
  85. 3036 LPRINT CHR$(INMEM);
  86. 3040 NEXT J:LPRINT:NEXT I:LPRINT STRING$(79,"-"):LOCATE 1,1:PRINT BL$;:LPRINT CHR$(12);:GOTO 30
  87. 3990 '&H2E2E..Replicate Routine....
  88. 4000 LOCATE 1,1:PRINT BL$;:LOCATE 1,1:PRINT "REPLICATE. Function (+,-,*,/) ? ";
  89. 4002 A$=INKEY$:IF A$<>"+" AND A$<>"-" AND A$<>"*" AND A$<>"/" THEN 4002
  90. 4100 C$=A$:LOCATE 1,1:PRINT BL$;:LOCATE 1,1:PRINT "Value? ";:GOSUB 9000:V1=VAL(B$):GOSUB 1000
  91. 4120 V=M(A1,A2):COL=B1:ROW=B2:IF B1=D1 THEN 4150
  92. 4130 FOR T=B1 TO D1:COL=T:GOSUB 4200:Z8=T:Z9=B2:GOSUB 9100::NEXT:GOTO 4160
  93. 4150 FOR T=B2 TO D2:ROW=T:GOSUB 4200:Z8=B1:Z9=T:GOSUB 9100:NEXT
  94. 4160 LOCATE 1,1:PRINT BL$;:C=Z8:R=Z9:B$="":GOTO 30
  95. 4200 IF C$="+" THEN M(COL,ROW)=V+V1:V=V+V1:GOTO 4240
  96. 4210 IF C$="-" THEN M(COL,ROW)=V-V1:V=V-V1:GOTO 4240
  97. 4220 IF C$="*" THEN M(COL,ROW)=V*V1:V=V*V1:GOTO 4240
  98. 4230 IF C$="/" THEN M(COL,ROW)=V/V1:V=V/V1
  99. 4240 GOSUB 4300:E$(COL,ROW)="E"+CHR$(A1+64)+B$+C$+RIGHT$(STR$(V1),LEN(STR$(V1))-1)
  100. 4250 A1=COL:A2=ROW:RETURN
  101. 4300 B$=RIGHT$(STR$(A2),LEN(STR$(A2))-1)
  102. 4310 IF LEN(B$)=1 THEN B$="0"+B$
  103. 4320 RETURN
  104.  
  105. 4990 '&H2E2E..Disk I/O Routine....
  106. 5000 LOCATE 1,1:PRINT BL$;:LOCATE 1,1:PRINT "SAVE. Enter filespec for spreadsheet data file: ";:INPUT A$
  107. 5040 LOCATE 1,1:PRINT BL$;:LOCATE 1,1:PRINT "Insert disk (in default drive if not in filespec); press a key: ";
  108. 5050 IF INKEY$="" THEN 5050
  109. 5052 LOCATE 1,1:PRINT BL$;:LOCATE 1,1:PRINT "Saving data to ";A$;:OPEN "O",1,A$:FOR A9=1 TO 11:FOR A0=1 TO 22:PRINT #1,M(A9,A0);",";E$(A9,A0);",";M$(A9,A0):NEXT A0:NEXT A9:CLOSE:LOCATE 1,1:PRINT BL$;:GOTO 30
  110. 5500 LOCATE 1,1:PRINT BL$;:LOCATE 1,1:PRINT "LOAD. Enter filespec for spreadsheet data file: ";:INPUT A$
  111. 5540 LOCATE 1,1:PRINT BL$;:LOCATE 1,1:PRINT "Insert disk (in default drive if not in filespec); press a key: ";
  112. 5550 IF INKEY$="" THEN 5550
  113. 5552 LOCATE 1,1:PRINT BL$;:LOCATE 1,1:PRINT "Loading data from ";A$;:OPEN "I",1,A$:FOR A9=1 TO 11:FOR A0=1 TO 22:INPUT #1,M(A9,A0),E$(A9,A0),M$(A9,A0):IF M$(A9,A0)="" THEN M$(A9,A0)=" "
  114. 5560 NEXT A0:NEXT A9:CLOSE:GOTO 10250
  115. 5990 '&H2E2E..Total Routine....
  116. 6000 T=1:GOSUB 1000:T=0:E$(C,R)="E":IF A1=B1 THEN 6020
  117. 6010 FOR Q1=A1 TO B1:T=T+M(Q1,A2):GOSUB 6040:NEXT:D2=D2+1:M(C,R)=T:Z8=C:Z9=R:GOSUB 9100:LOCATE 1,1:PRINT BL$;:GOTO 30
  118. 6020 FOR Q1=A2 TO B2:T=T+M(A1,Q1):GOSUB 6050:NEXT:D2=D2+1:M(C,R)=T:Z8=C:Z9=R:GOSUB 9100:LOCATE 1,1:PRINT BL$;:GOTO 30
  119. 6040 A0=A2:GOSUB 700:E$(C,R)=E$(C,R)+CHR$(Q1+64)+B$:IF Q1<>B1 THEN E$(C,R)=E$(C,R)+"+":RETURN ELSE RETURN
  120. 6050 A0=Q1:GOSUB 700:E$(C,R)=E$(C,R)+CHR$(A1+64)+B$:IF Q1<>B2 THEN E$(C,R)=E$(C,R)+"+":RETURN ELSE RETURN
  121. 6090 '&H2E2E..Delete Routine....
  122. 6100 B$="":LOCATE 1,1:PRINT BL$;:LOCATE 1,1:PRINT "DELETE. Enter co-ordinates: ";:GOSUB 1100:A1=C:A2=R:PRINT "..";:GOSUB 1100:B1=C:B2=R:IF A1=B1 THEN 6120
  123. 6110 FOR Q1=A1 TO B1:M(Q1,A2)=0:E$(Q1,A2)="^":M$(Q1,A2)=" ":LOCATE A2+2,(Q1*7)-3:PRINT "      ";:NEXT:LOCATE 1,1:PRINT BL$;:GOTO 30
  124. 6120 FOR Q1=A2 TO B2:M(A1,Q1)=0:E$(A1,Q1)="^":M$(A1,Q1)=" ":LOCATE Q1+2,(A1*7)-3:PRINT "      ";:NEXT:LOCATE 1,1:PRINT BL$;:GOTO 30
  125. 6190 '&H2E2E..Average Routine....
  126. 6200 A=1:GOSUB 1000:A=0:E$(D1,D2)="E":IF A1=B1 THEN 6220
  127. 6210 F1=0:FOR Q1=A1 TO B1:A=A+M(Q1,A2):F1=F1+1:GOSUB 6240:NEXT:A=A/F1:M(D1,D2)=A:GOSUB 6260:Z8=D1:Z9=D2:GOSUB 9100:GOTO 30
  128. 6220 F1=0:FOR Q1=A2 TO B2:A=A+M(A1,Q1):F1=F1+1:GOSUB 6250:NEXT:A=A/F1:M(D1,D2)=A:GOSUB 6260:Z8=D1:Z9=D2:GOSUB 9100:GOTO 30
  129. 6240 A0=A2:GOSUB 700:E$(D1,D2)=E$(D1,D2)+CHR$(Q1+64)+B$:IF Q1<>B1 THEN E$(D1,D2)=E$(D1,D2)+"+":RETURN ELSE RETURN
  130. 6250 A0=Q1:GOSUB 700:E$(D1,D2)=E$(D1,D2)+CHR$(A1+64)+B$:IF Q1<>B2 THEN E$(D1,D2)=E$(D1,D2)+"+":RETURN ELSE RETURN
  131. 6260 E$(D1,D2)=E$(D1,D2)+"/"+RIGHT$(STR$(F1),LEN(STR$(F1))-1):RETURN
  132. 6690 '&H2E2E..Equation Routine....
  133. 7000 LOCATE 1,1:PRINT BL$;:LOCATE 1,1:PRINT "<E>nter equation or <C>ompute formulas: ";
  134. 7010 A$=INKEY$:IF A$="" THEN 7010 ELSE IF A$="E" THEN 7020 ELSE IF A$="C" THEN 7100 ELSE 7000
  135. 7020 LOCATE 1,1:PRINT BL$;:LOCATE 1,1:PRINT "Enter equation: ";:GOSUB 9000:E$(C,R)="E"+B$:M$(C,R)=" "
  136. 7030 FOR I=2 TO LEN(E$(C,R)):A$=MID$(E$(C,R),I,1)
  137. 7040 IF ASC(A$)>41 AND ASC(A$)<58 THEN 7070
  138. 7050 IF ASC(A$)>64 AND ASC(A$)<91 THEN 7070
  139. 7060 E$(C,R)="^":GOTO 7080
  140. 7070 NEXT I
  141. 7080 LOCATE 1,1:PRINT BL$;:GOTO 30
  142. 7100 FOR J=1 TO 11:FOR I=1 TO 22
  143. 7110 IF E$(J,I)="^" THEN 7900
  144. 7120 A$=LEFT$(E$(J,I),1):IF A$="E" THEN 7130 ELSE 7900
  145. 7130 TMP=0:OP=1:M(J,I)=0
  146. 7140 FOR II=2 TO LEN(E$(J,I)):A$=MID$(E$(J,I),II,1)
  147. 7150 IF ASC(A$)>64 AND ASC(A$)<91 THEN GOSUB 7200:GOSUB 7300:GOTO 7180
  148. 7160 IF (ASC(A$)>47 AND ASC(A$)<58) OR ASC(A$)=46 THEN GOSUB 7250:GOSUB 7300:GOTO 7180
  149. 7170 IF A$="+" THEN OP=1 ELSE IF A$="-" THEN OP=2 ELSE IF A$="*" THEN OP=3 ELSE IF A$="/" THEN OP=4
  150. 7180 NEXT II
  151. 7190 Z8=J:Z9=I:GOSUB 9100:LOCATE I+2,(J*7)-2:PRINT "     ";
  152. 7191 LOCATE I+2,(J*7)-3+(6-LEN(B$)):PRINT B$;
  153. 7195 GOTO 7900
  154. 7200 COL=ASC(A$)-64:ROW=VAL(MID$(E$(J,I),II+1,2)):II=II+2
  155. 7210 TMP=M(COL,ROW):RETURN
  156. 7250 B$="":CNT=-1
  157. 7260 IF (A$>"/" AND A$<":") OR A$="." THEN B$=B$+A$:CNT=CNT+1:A$=MID$(E$(J,I),II+CNT+1,1):GOTO 7260
  158. 7270 TMP=VAL(B$):II=II+CNT:RETURN
  159. 7300 IF OP=1 THEN M(J,I)=M(J,I)+TMP:RETURN
  160. 7310 IF OP=2 THEN M(J,I)=M(J,I)-TMP:RETURN
  161. 7320 IF OP=3 THEN M(J,I)=M(J,I)*TMP:RETURN
  162. 7330 IF OP=4 THEN M(J,I)=M(J,I)/TMP:RETURN
  163. 7340 RETURN
  164. 7900 NEXT I:NEXT J:Z8=C:Z9=R:GOSUB 9100:GOTO 30
  165. 7990 '&H2E2E..Help Routine....
  166. 8000 LOCATE 1,1:PRINT BL$;:LOCATE 1,1:PRINT "Enter command for Help?";
  167. 8010 A$=INKEY$:IF A$="" THEN 8010 ELSE IF A$="B" THEN 8020 ELSE IF A$="Q" THEN 8030 ELSE IF A$="N" THEN 8040 ELSE IF A$="P" THEN 8050 ELSE IF A$="C" THEN 8060 ELSE IF A$="R" THEN 8070 ELSE IF A$="S" THEN 8080 ELSE IF A$="D" THEN 8090
  168. 8011 IF A$="L" THEN 8100 ELSE IF A$="T" THEN 8110 ELSE IF A$="A" THEN 8120 ELSE IF A$="G" THEN 8130 ELSE IF A$="E" THEN 8140 ELSE IF A$=">" THEN 8150 ELSE 30
  169. 8020 LOCATE 1,1:PRINT "<B>LANK. Clears the contents of the current cursor position.";:GOTO 8200
  170. 8030 LOCATE 1,1:PRINT "<Q>UIT. Exits the MiniCalc program.                     ";:GOTO 8200
  171. 8040 LOCATE 1,1:PRINT "<N>EW screen. Clears the screen and starts the program over.";:GOTO 8200
  172. 8050 LOCATE 1,1:PRINT "<P>RINT. Output the screen to the printer for hard copy.";:GOTO 8200
  173. 8060 LOCATE 1,1:PRINT "<C>OMPUTE. Performs a math function with two positions. ";:GOTO 8200
  174. 8070 LOCATE 1,1:PRINT "<R>EPLICATE. Performs a math function on a series of positions.";:GOTO 8200
  175. 8080 LOCATE 1,1:PRINT "<S>AVE. Saves the screen contents to a disk file.       ";:GOTO 8200
  176. 8090 LOCATE 1,1:PRINT "<D>ELETES a series of row or column positions.          ";:GOTO 8200
  177. 8100 LOCATE 1,1:PRINT "<L>OAD. Loads a previously saved screen from disk.      ";:GOTO 8200
  178. 8110 LOCATE 1,1:PRINT "<T>OTAL a series of row or column positions.            ";:GOTO 8200
  179. 8120 LOCATE 1,1:PRINT "<A>VERAGE a series of row or column positions.          ";:GOTO 8200
  180. 8130 LOCATE 1,1:PRINT "<G>RAPH a series of row or column positions.            ";:GOTO 8200
  181. 8140 LOCATE 1,1:PRINT "<E>quation. Enter equation or compute equations.        ";:GOTO 8200
  182. 8150 LOCATE 1,1:PRINT "(>). Go to location on screen.                          ";:GOTO 8200
  183. 8200 IF INKEY$="" THEN 8200 ELSE 30
  184. 8990 '&H2E2E..Value Input Routine....
  185. 9000 B$=""
  186. 9001 A$=INKEY$:IF A$="" THEN 9001 ELSE IF A$=CHR$(13) THEN RETURN
  187. 9002 IF A$=CHR$(8) THEN LOCATE ,POS(0)-1:B$=LEFT$(B$,LEN(B$)-1):GOTO 9001
  188. 9003 PRINT A$;:B$=B$+A$:GOTO 9001
  189. 9090 '&H2E2E..Number Display....
  190. 9100 B$=STR$(M(Z8,Z9))
  191. 9105 IF M(Z8,Z9)>-1 THEN B$=RIGHT$(B$,LEN(B$)-1)
  192. 9106 IF LEN(B$)<7 THEN 9120
  193. 9108 BZ=INT(M(Z8,Z9)):BZ$=STR$(BZ):IF BZ>-1 THEN BZ$=RIGHT$(BZ$,LEN(BZ$)-1)
  194. 9110 IF LEN(BZ$)>6 THEN B$=" .... ":GOTO 9130
  195. 9115 B$=LEFT$(B$,6)
  196. 9120 LOCATE Z9+2,(Z8*7)-3:PRINT "      ";
  197. 9130 LOCATE Z9+2,(Z8*7)-3+(6-LEN(B$)):PRINT B$;
  198. 9150 RETURN
  199. 9190 '&H2E2E..Undo Inverse Video....
  200. 9200 DEF SEG=&HB800:FOR I=A+1 TO A+12 STEP 2:POKE I,7:NEXT I
  201. 9210 RETURN
  202. 9990 '&H2E2E..MiniPlot Routine....
  203. 10000 CLS:FOR T=1 TO 22:P(T)=0:NEXT:LOCATE 1,1:PRINT "--Miniplot Version 1.0 -- John Vandegrift, Sept. 1982--";
  204. 10002 LOCATE 3,1:PRINT "GRAPH A COLUMN OR A ROW (C,R) ?";
  205. 10004 A$=INKEY$:IF A$="" THEN 10004 ELSE IF A$="C" THEN 10006 ELSE IF A$="R" THEN 10008 ELSE 10250
  206. 10006 LOCATE 5,1:PRINT "WHICH COLUMN DO YOU WANT TO GRAPH (A-K) ?";
  207. 10007 A$=INKEY$:IF A$="" THEN 10007 ELSE IF A$<"A" OR A$>"K" THEN 10007 ELSE S=ASC(A$)-64:FOR Q=1 TO 22:P(Q)=M(S,Q):NEXT:INC=3:GOTO 10100
  208. 10008 LOCATE 5,1:PRINT "WHICH ROW DO YOU WANT TO GRAPH (1-22) ?";
  209. 10010 A$=INKEY$:IF A$="" THEN 10010 ELSE IF A$<"0" OR A$>"2" THEN 10010 ELSE Z5$=A$:PRINT A$;
  210. 10011 A$=INKEY$:IF A$="" THEN 10011 ELSE IF A$<"0" OR A$>"9" THEN 10011 ELSE Z5$=Z5$+A$:PRINT A$;:S=VAL(Z5$):Z5$="":FOR Q=1 TO 11:P(Q)=M(Q,S):NEXT:INC=6
  211. 10100 CLS:FOR X=1 TO 22:LOCATE X,10:PRINT CHR$(221);:NEXT:LOCATE 23,10:PRINT STRING$(67,220);
  212. 10101 IF P(12)=0 THEN LOCATE 24,12:FOR N=1 TO 11:PRINT CHR$(N+64);"     ";:NEXT N:NE=11 ELSE FOR N=1 TO 22:LOCATE 24,11+(N-1)*3:PRINT N;:NEXT N:NE=22
  213. 10110 LOW=P(1):HIGH=P(1):FOR N=1 TO NE:IF P(N)>HIGH THEN HIGH=P(N)
  214. 10120 IF P(N)<LOW THEN LOW=P(N)
  215. 10130 NEXT N:INCRE=(HIGH-LOW)/22
  216. 10150 FOR X=1 TO 23:LOCATE 24-X,1:PRINT USING "######.##";LOW+(INCRE*(X-1));:NEXT
  217. 10160 FOR I=1 TO NE:FOR J=1 TO 22:IF P(I) < LOW+(INCRE*J) THEN 10180
  218. 10170 LOCATE 23-J,12+(INC*(I-1)):PRINT CHR$(219);:NEXT J
  219. 10180 NEXT I
  220. 10200 LOCATE 25,19:PRINT "Space bar - plot options.  P - print graph.";
  221. 10230 A$=INKEY$:IF A$="" THEN 10230 ELSE IF A$="P" THEN 10500 ELSE IF A$<>" " THEN 10230 ELSE CLS:LOCATE 10,38:PRINT "MiniPlot":PRINT:PRINT TAB(35);"<Q>UIT PROGRAM":PRINT TAB(32);"<P>LOT ANOTHER GRAPH":PRINT TAB(30);"OR <R>ETURN TO QUIKCALC"
  222. 10231 LOCATE 18,37:PRINT "Selection ?";
  223. 10240 A$=INKEY$:IF A$="Q" THEN 2600 ELSE IF A$="P" THEN 10000 ELSE IF A$="R" THEN 10250 ELSE 10240
  224. 10250 CLS:FOR T=3 TO 24:LOCATE T,1:PRINT USING "##";T-2;:PRINT CHR$(221);:NEXT
  225. 10251 LOCATE 2,3:PRINT CHR$(219);:FOR I=65 TO 75:PRINT S$;" ";CHR$(I);" ";S$;:NEXT I
  226. 10260 FOR X=1 TO 11:FOR Y=1 TO 22:IF M(X,Y)<>0 THEN Z8=X:Z9=Y:GOSUB 9100:GOTO 10265
  227. 10262 IF M$(X,Y)<>"" THEN LOCATE Y+2,(X*7)-3+(6-LEN(M$(X,Y))):PRINT M$(X,Y);
  228. 10265 NEXT Y:NEXT X:B$=STR$(M(1,1))
  229. 10270 C=1:R=1:GOTO 30
  230. 10500 LPRINT TAB(20);"------------Bar graph of data------------":DEF SEG = &HB800:WIDTH "LPT1:",81:FOR I=0 TO 23:FOR J=0 TO 79:INMEM=PEEK((J*2)+(I*160))
  231. 10510 IF INMEM=219 THEN INMEM=223
  232. 10520 LPRINT CHR$(INMEM);:NEXT J:LPRINT:NEXT I:LPRINT CHR$(12);:GOTO 10230
  233.